home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
A-COMAL Series
/
(k)aan.d64
/
src.printer
< prev
next >
Wrap
Text File
|
2007-02-28
|
15KB
|
939 lines
;PUT "@0:SRC.PRINTER"
.OPT NOLIST
.LIB 0:SYMBS
.OPT NOSYMBS
.OPT NOGEN
;***
*=$9000
;*****************
.BYTE DEFPAG+ROMMED
.WORD FILEND ;LAST ENTRY
.WORD SENSE ;SENCE ROUTINE
;*****************
.BYTE 7,'PRINTER' ;PAK B NAME
.WORD CMDSB ;PTR TO FIRST COMMAND
.WORD INITB ;INITIALIZATION RTNND
.BYTE 16,'PRINTER''COMMANDS' ;PAK A NAME
.WORD CMDSA ;PTR TO FIRST COMMAND
.WORD INITA ;INITIALIZATION RTNND
.BYTE 0 ;END OF PACKAGES
;****************
SENSE CPY #NEW
BEQ CLRPAK
CPY #DSCRD
BEQ CLRPAK
CPY #WARM1
BEQ CLRPAK
RTS ;END SENSE
CLRPAK LDA #<$F1CA
STA $0326 ;WRITE ROUTINE
LDA #>$F1CA
STA $0326+1
LDA #0
STA FLAG
STA RVSFLG
RTS
;*****************
;INITIALIZATION ROUTINE
INITB LDX #70
MOVWRT LDA NSTUFF-1,X ;PATCH
STA $033C-1,X ;CASSETTE BUFFER
DEX
BNE MOVWRT
LDA #<$033C
STA $0326
LDA #>$033C
STA $0326+1
LDA #4
STA LPSA
INITA RTS
;*****************
;PATCHES/UNPATCHES
;*****************
;THIS SECTION IS MOVED DOWN
;TO THE CASSETTE BUFFER FOR
;EXECUTION
;*****************
NSTUFF PHA ;STORE CHARACTER
LDA $9A
CMP LPFA
BEQ NSTOK ;NEW STUFF OK
PLA
JMP $F1CA
NSTOK SEI ;PROTECT FROM IRQ
LDA PAGE ;GET PAGE
STA $FE
LDA $1
STA $FD
LDA #$37
STA $1
LDA #PAGE0
STA $DE00
STA PAGE
PLA
CLI ;OK TO INTERRUPT
JSR NEWOUT
PHA
SEI
LDA $FE
STA $DE00
STA PAGE
LDA $FD
STA $1
PLA
CLI
RTS
;*****************
;** NAME/LOOKUP **
;*****************
CMDSB
;****
.BYTE 11,'SCREEN''DUMP'
.WORD CMDD1
;
.BYTE 14,'CBM''CHARACTERS'
.WORD CMDD2
;
.BYTE 8,'HEX''DUMP'
.WORD CMDD3
;
.BYTE 10,'SETPRINTER'
.WORD CMDD4
;
.BYTE 11,'SET''REVERSE'
.WORD CMDD5
;
.BYTE 8,'HARDCOPY'
.WORD CMDD6
;
.BYTE 9,'GETSCREEN'
.WORD CMDD7
;
.BYTE 9,'SETSCREEN'
.WORD CMDD8
;
.BYTE 7,'DENSITY'
.WORD CMDD11
;
;****
.BYTE 0 ;END OF COMMANDS
;*******************
;** COMMAND DATA **
;*******************
CMDD1 .BYTE PROC ;TYPE OF COMMAND
.WORD PDUMP ;START ADDRESS TO IT
.BYTE 1 ;NUMBER OF PARAMETERS
.BYTE VALUE+INT ;PARM TYPE
.BYTE ENDPRC ;** END PARMS **
;****
CMDD2 .BYTE PROC ;TYPE OF COMMAND
.WORD CONVRT ;START ADDRESS TO IT
.BYTE 1 ;NUMBER OF PARAMETERS
.BYTE VALUE+INT ;PARM TYPE
.BYTE ENDPRC
;****
CMDD11 .BYTE PROC ;TYPE OF COMMAND
.WORD SETDNS ;START ADDRESS TO IT
.BYTE 1 ;NUMBER OF PARAMETERS
.BYTE VALUE+INT ;PARM TYPE
.BYTE ENDPRC
;****
CMDD3 .BYTE PROC
.WORD HEXDMP
.BYTE 1
.BYTE VALUE+INT
.BYTE ENDPRC
;****
CMDD4 .BYTE PROC
.WORD SETP
.BYTE 1
.BYTE VALUE+STR
.BYTE ENDPRC
;****
CMDD5 .BYTE PROC
.WORD REVERS
.BYTE 1
.BYTE VALUE+INT
.BYTE ENDPRC
;****
CMDD6 .BYTE PROC
.WORD HRDCPY
.BYTE 1
.BYTE VALUE+STR
.BYTE ENDPRC
;****
CMDD7 .BYTE PROC
.WORD GTSCRN
.BYTE 1
.BYTE REF+STR
.BYTE ENDPRC
;****
CMDD8 .BYTE PROC
.WORD STSCRN
.BYTE 1
.BYTE REF+STR
.BYTE ENDPRC
;****
.BYTE 0;END OF TABLE
;****
GETVER LDA TESTRV ;GET REVISION
CMP #76 ;2.01Y VERS?
BNE NOTVY
CLC
RTS
NOTVY SEC
RTS
;******************
HEXDMP LDA #1
JSR FNDPAR
LDY #1
LDA (COPY1),Y
BEQ CLRHEX
LDA FLAG
ORA #%00000010
STA FLAG
RTS
CLRHEX LDA FLAG
AND #%11111101
STA FLAG
RTS
;******************
CONVRT LDA #1 ;FIRSTPARM
JSR FNDPAR
LDY #1
LDA (COPY1),Y
BEQ CLRCBM
LDA FLAG
ORA #%00000001
STA FLAG
JSR RESETP
JSR SETLS
RTS
CLRCBM LDA FLAG
AND #%11111110
STA FLAG
JSR RESETP
RTS
;******************
REVERS LDA #1
JSR FNDPAR
LDY #1
LDA (COPY1),Y
BEQ CLRRVS
LDA #$FF
.BYTE $2C ;BIT $XXXX
CLRRVS LDA #0
STA RVSFLG
RTS
;*************
SETDNS LDA #1
JSR FNDPAR
LDY #1
LDA (COPY1),Y
BNE CLRDNS
LDA #$FF
.BYTE $2C ;BIT $XXXX
CLRDNS LDA #0
STA DENSIT
RTS
;*************
PDUMP LDA #1
JSR FNDPAR
LDY #1
LDA (COPY1),Y
BNE NOTPDA
JMP PDUMPA
NOTPDA CMP #1
BNE NOTPDB
JMP PDUMPB
NOTPDB CMP #2
BNE NOTPDC
JMP PDUMPC
NOTPDC CMP #3
BNE NOTPDD
JMP PDUMPD
NOTPDD LDX #1 ;ERROR
JMP RUNERR :REPORT IT
;*************
SETP JSR GETVER ;GET VERSION
BCS SETP2
JSR GOTO
.BYTE PAGE1
.WORD $A80B
SETP2 JSR GOTO
.BYTE PAGE1
.WORD $AB21
;*************
;GETMAP ROUTINE FINDS THE CORRECT
;SCREEN PORTIONS OF MEMORY AND
;STORES THEM IN THE WORKSPACE
GETMAP LDA #0
STA BANK ;CLEAR LOW BYTE
STA SCRMEM ;CLEAR LOW BYTE
STA CHRMEM ;CLEAR LOW BYTE
LDA $DD00 ;GET BANK SELECTION
AND #%00000011 ;ELIMINATE EXCESS
TAX ;VALUE TO REGISTER
LDA TRANGE,X
STA BANK+1 ;BANK SET TO CURRENT
;***
;FIND SCREEN MEMORY
;***
LDA VCTR13 ;VIC CONTROL REGISTER
AND #%11110000 ;SCREEN DATA ONLY
CLC ;CLEAR CARRY
ROR A ;DIVIDE BY 2
ROR A ;DIVIDE BY 2 AGAIN
CLC ;CLEAR STATUS REGISTER
ADC BANK+1 ;ADD BANK TO OFFSET
STA SCRMEM+1 ;SET SCREEN CURRENT
;***
;FIND CHARACTER MEMORY
;***
LDA VCTR13 ;VIC CONTROL REGISTER
AND #%00001110 ;ELIMINATE EXCESS
CLC
ASL A ;MULTIPLY BY 2
ASL A ;MULTIPLY BY 2 AGAIN
STA CHRMEM+1
;*
;CORRECT FOR HARDWARE
;*
LDA BANK+1 ;GET GRAPHICS BANK
CMP #$C0 ;IS IT ACCESSABLE
BEQ ADJUST ;BY THE CHR ROM ?
CMP #0 ;ADJUST FOR HARDWARE
BNE NOTADJ ;IF NOT FIND ADDRESS
ADJUST LDA #$C0 ;HARDWARE CORRECT
NOTADJ CLC ;CLEAR STATUS BIT
ADC CHRMEM+1
STA CHRMEM+1
;***
;IDENTIFY GRAPHICS MODE
;***
LDA VCTR12 ;VIDIO CTRL REGISTER
AND #%00010000 ;MODE ONLY
BNE GMOD1 ;MULTI-COLOR MODE
LDA #0
.BYTE $2C ;BIT INSTRUCTION
GMOD1 LDA #$80
STA SCRMOD
LDA VCTR11 ;BIT-MAP MODE
ROR A
AND #%01000000 ;MODE ONLY
ORA SCRMOD
STA SCRMOD
RTS
;**************
HRDCPY JSR GETVER ;GET VERSION
BCS HRDCP2
JSR GOTO
.BYTE PAGE1
.WORD $A96A
HRDCP2 JSR GOTO
.BYTE PAGE1
.WORD $A971
;*************
GTSCRN JSR GETVER ;GET VERSION
BCS GTSCR2
JSR GOTO
.BYTE PAGE1
.WORD $A878
GTSCR2 JSR GOTO
.BYTE PAGE1
.WORD $A87F
;*************
STSCRN JSR GETVER ;GET VERSION
BCS STSCR2
JSR GOTO
.BYTE PAGE1
.WORD $A87B
STSCR2 JSR GOTO
.BYTE PAGE1
.WORD $A882
;*************
;*****************
CMDSA
;****
.BYTE 4,'BEEP'
.WORD CMDA1
.BYTE 9,'BACKSPACE'
.WORD CMDA2
.BYTE 7,'ENLARGE'
.WORD CMDA3
.BYTE 9,'UNENLARGE'
.WORD CMDA4
.BYTE 8,'CONDENSE'
.WORD CMDA5
.BYTE 10,'UNCONDENSE'
.WORD CMDA6
.BYTE 9,'UNDERLINE'
.WORD CMDA7
.BYTE 13,'UNDERLINE''OFF'
.WORD CMDA8
.BYTE 9,'EMPHASIZE'
.WORD CMDA9
.BYTE 11,'UNEMPHASIZE'
.WORD CMDA10
.BYTE 4,'BOLD'
.WORD CMDA11
.BYTE 6,'UNBOLD'
.WORD CMDA12
.BYTE 5,'ELITE'
.WORD CMDA13
.BYTE 4,'PICA'
.WORD CMDA14
.BYTE 11,'SUPERSCRIPT'
.WORD CMDA15
.BYTE 9,'ENDSCRIPT'
.WORD CMDA16
.BYTE 9,'SUBSCRIPT'
.WORD CMDA17
.BYTE 7,'REVERSE'
.WORD CMDA18
.BYTE 11,'REVERSE''OFF'
.WORD CMDA19
.BYTE 7,'ITALICS'
.WORD CMDA20
.BYTE 11,'ITALICS''OFF'
.WORD CMDA21
.BYTE 11,'SPACING''1''6'
.WORD CMDA22
.BYTE 11,'SPACING''1''8'
.WORD CMDA23
.BYTE 8,'FORMFEED'
.WORD CMDA24
.BYTE 13,'RESET''PRINTER'
.WORD CMDA25
;**********
.BYTE 0
;**********
CMDA1 .BYTE PROC,<AINS1,>AINS1,0,ENDPRC
CMDA2 .BYTE PROC,<AINS2,>AINS2,0,ENDPRC
CMDA3 .BYTE PROC,<AINS3,>AINS3,0,ENDPRC
CMDA4 .BYTE PROC,<AINS4,>AINS4,0,ENDPRC
CMDA5 .BYTE PROC,<AINS5,>AINS5,0,ENDPRC
CMDA6 .BYTE PROC,<AINS6,>AINS6,0,ENDPRC
CMDA7 .BYTE PROC,<AINS7,>AINS7,0,ENDPRC
CMDA8 .BYTE PROC,<AINS8,>AINS8,0,ENDPRC
CMDA9 .BYTE PROC,<AINS9,>AINS9,0,ENDPRC
CMDA10 .BYTE PROC,<AINS10,>AINS10,0,ENDPRC
CMDA11 .BYTE PROC,<AINS11,>AINS11,0,ENDPRC
CMDA12 .BYTE PROC,<AINS12,>AINS12,0,ENDPRC
CMDA13 .BYTE PROC,<AINS13,>AINS13,0,ENDPRC
CMDA14 .BYTE PROC,<AINS14,>AINS14,0,ENDPRC
CMDA15 .BYTE PROC,<AINS15,>AINS15,0,ENDPRC
CMDA16 .BYTE PROC,<AINS16,>AINS16,0,ENDPRC
CMDA17 .BYTE PROC,<AINS17,>AINS17,0,ENDPRC
CMDA18 .BYTE PROC,<AINS18,>AINS18,0,ENDPRC
CMDA19 .BYTE PROC,<AINS19,>AINS19,0,ENDPRC
CMDA20 .BYTE PROC,<AINS20,>AINS20,0,ENDPRC
CMDA21 .BYTE PROC,<AINS21,>AINS21,0,ENDPRC
CMDA22 .BYTE PROC,<AINS22,>AINS22,0,ENDPRC
CMDA23 .BYTE PROC,<AINS23,>AINS23,0,ENDPRC
CMDA24 .BYTE PROC,<AINS24,>AINS24,0,ENDPRC
CMDA25 .BYTE PROC,<AINS25,>AINS25,0,ENDPRC
;**********
.MAC PTR
LDA #<?1
LDY #>?1
JMP PTRCOT ;PRINTER CMD OUT
.MND
;**********
PTRCOT STA FREKZP
STY FREKZP+1
LDA #133
LDX #4
LDY #0
JSR SETLFS
LDA #0
JSR SETNAM
LDA #133
JSR OPEN
LDX #133
JSR CHKOUT
LDY #0
LDA (FREKZP),Y
STA FREKZP+2
PTRC0T CPY FREKZP+2
BEQ PTREND
INY
LDA (FREKZP),Y
JSR CHROUT
JMP PTRC0T
PTREND JSR CLRCHN
LDA #133
JSR CLOSE
RTS
;***************
AINS1 PTR DAT1
AINS2 PTR DAT2
AINS3 PTR DAT3
AINS4 PTR DAT4
AINS5 PTR DAT5
AINS6 PTR DAT6
AINS7 PTR DAT7
AINS8 PTR DAT8
AINS9 PTR DAT9
AINS10 PTR DAT10
AINS11 PTR DAT11
AINS12 PTR DAT12
AINS13 PTR DAT13
AINS14 PTR DAT14
AINS15 PTR DAT15
AINS16 PTR DAT16
AINS17 PTR DAT17
AINS18 PTR DAT18
AINS19 PTR DAT19
AINS20 PTR DAT20
AINS21 PTR DAT21
AINS22 PTR DAT22
AINS23 PTR DAT23
AINS24 PTR DAT24
AINS25 PTR DAT25
;***************
;**********************
NEWOUT STA CHRTMP ;STORE CHAR
LDA FLAG ;PACK IN USE
BNE TOPRNT ;PACK IN USE
LDA CHRTMP ;RECOVER CHAR
JMP CIOUT ;GO NORMAL
;**********************
TOPRNT STX XTEMP
STY YTEMP
JSR T0PRNT
LDX #$FF
DECX DEX
BNE DECX
STX $90 ;CLEAR STATUS
LDX XTEMP
LDY YTEMP
CLC
CLV
RTS
T0PRNT LDA FLAG ;HOW NOW?
AND #%00000010 ;CHECK HEX
CMP #%00000010 ;OUTPUT
BNE PAKOU1 ;NOPE NOT HEX
LDA CHRTMP ;GET CHARACTER
CMP #$0D ;CR
BEQ SNDCR
PHA ;MAKE A COPY
PHA ;MAKE A COPY
LDA #'$'
JSR PAKOUT
PLA
LSR A
LSR A
LSR A
LSR A
JSR OUTIT ;SEND NIBBLE
PLA
AND #$0F
JSR OUTIT
LDA #' '
SNDCR JSR PAKOUT
RTS
;**********************
OUTIT CMP #$0A
BCC NUMB
CLC
ADC #$07
NUMB ADC #$30
JSR PAKOUT
RTS
;**********************
PAKOU1 LDA CHRTMP
PAKOUT PHA
LDA FLAG
AND #%00000001
CMP #%00000001
BEQ CBMOUT ;TO CBM CHCTRS
PLA
JMP CIOUT ;SEND AND RETURN
;**********************
CBMOUT JSR GETMAP
JSR FILPAT
PLA
STA CHRTMP
CMP #$0D ;A CR?
BNE NOTCRL ;SEND GRAPHIC CHR
LDA #0 ;CLEAR MODES
STA QUOTEM ;CLEAR QUOTE
STA RVSM ;REVERSE MODE
LDA #$0D ;GET A CR
JMP CIOUT ;TERMINATE AND RTN
NOTCRL CMP #'"'
BNE NOTQUO ;NOT QUOTE
LDA QUOTEM
BNE CLRQUO ;CLEAR QUOTE MODE
LDA #$80
.BYTE $2C ;BIT INST
CLRQUO LDA #$00
STA QUOTEM
JMP SGC
NOTQUO CMP #$12 ;REVERSE ON?
BNE NOTR ;NOT REVERSE ON
BIT QUOTEM ;CHECK FOR QUOTE MODE
BMI NOTR ;YES SEND CHR
LDA #$80 ;NO SET RVS TRUE
STA RVSM ;STORE FLAG
RTS ;EXIT SUBROUTINE
NOTR CMP #$92 ;RVS OFF
BNE NOTRO ;NOT REVERSE OFF
BIT QUOTEM ;CHECK FOR QUOTE MODE
BMI NOTRO ;YES SEND CHR
LDA #$00 ;NO SET RVS FALSE
STA RVSM ;STORE FLAG
RTS ;EXIT SUBROUTINE
NOTRO CMP #$14 ;CBM DELETE
BNE CHKPAG
BIT QUOTEM ;CHECK FOR QUOTE MODE
BMI CHKPAG ;YES SEND CHR
LDA #$08 ;ASCII DELETE
JMP CIOUT ;SEND TO PRINTER
;EXIT SUBROUTINE
CHKPAG CMP #$93 ;CLEAR/HOME
BEQ CHKPA2
CMP #12 ;LINE FEED
BNE CHKCTL
CHKPA2 BIT QUOTEM ;CHK QUOTE MODE
BMI CHKCTL ;YES SEND CHR
LDA #12 ;ASCII TOF
JMP CIOUT ;SEND TO PRINTER
;EXIT SUBROUTINE
CHKCTL CMP #$20 ;IS IT A CONTROL
BCS SGC ;NOT CTRL
LDA CHRTMP ;RECOVER CHARACTER
ORA #%11000000 ;SET MSB/RVS
STA CHRTMP ;RESAVE IT
SGC JSR SNDGRF ;SEND GRAPHIC IMAGE
LDA #$80
TAX
LOOPXY DEX
BNE LOOPXY
RTS
;**********************
;FILL PATTERN WITH GRAPHIC
FILPAT LDA #0
STA SLFMOD
STA SLFMOD+1
LDA CHRTMP
CMP #$20
BCC CTRCHR
AND #$3F ;TO SCREEN CODE
BIT CHRTMP
BPL CTRCHR
ORA #%01000000
CTRCHR STA SLFMOD
LDX #3
ROLLAD CLC
ROL SLFMOD
ROL SLFMOD+1
DEX
BNE ROLLAD
LDA CHRMEM+1
CLC
ADC SLFMOD+1
STA SLFMOD+1
SEI ;LOCK OUT INTERRUPTS
LDA $1 ;6510 REGISTER
PHA
LDX CHRMEM+1
CPX #$D0
BEQ ROMCHS
CPX #$D8
BEQ ROMCHS
AND #$FC
BNE RAMCHS
ROMCHS AND #$FB
RAMCHS STA $1
LDY #$07 ;NUMBER OF BYTES
LOOP01 LDA $FFFF,Y
SLFMOD = *-2
STA PRTPAT,Y
DEY
BPL LOOP01
PLA
STA $1
CLI
LDY #7
LOOP02 LDX #0
LOOP03 ROL PRTPAT,X
ROL A
INX
CPX #8
BNE LOOP03
PHA
DEY
BPL LOOP02
LDY #7
LOOP04 PLA ;RECALL SAVED IMAGE
BIT RVSM ;CHECK REVERSE MODE
BPL DONTRV ;DONT REVERSE IT
EOR #$FF
DONTRV STA PRTPAT,Y
DEY
BPL LOOP04
RTS
;**************
;*********************
;* SYSTEM VARIABLES *
;*********************
SCNKEY = $FF9F
GETIN = $FFE4
;VIC IS $D000
VCTR11 = $D011
VCTR12 = $D016
VCTR13 = $D018
;*********************
;*ZERO PAGE LOCATIONS*
;*********************
BITMAP = $8B
BUFR = $8D
;
;*********************
;* PACKAGE STORAGE *
;*********************
PRTPAT .BYTE ' '
STOR4 .BYTE 0,0,0,0,0
ROW .BYTE 0
COL .BYTE 0
ADDR1 .BYTE 0
ADDR2 .BYTE 0
FLAG01 .BYTE 0
TEMP1 .BYTE 0
BANK .WORD 0
SCRMEM .WORD 0
CHRMEM .WORD 0
SCRMOD .BYTE 0
QUOTEM .BYTE 0
RVSM .BYTE 0
FLAG .BYTE 0
RVSFLG .BYTE 0
DENSIT .BYTE 0
CHRTMP .BYTE 0
XTEMP .BYTE 0
YTEMP .BYTE 0
INTMP1 .BYTE 0
INTMP2 .BYTE 0
INTMP3 .BYTE 0
TRANGE .BYTE $C0,$80,$40,0
BUFRA *=*+320
BUFRB *=*+320
;*********************
;* PACKAGE CONSTANTS *
;*********************
;*************************
CTRTB2 .BYTE 3,$20,76,27
;*************************
RVSTAB .BYTE $FF,$FC,$F3,$F0
.BYTE $CF,$CC,$C3,$C0
.BYTE $3F,$3C,$33,$30
.BYTE $0F,$0C,$03,$00
;*************************
NORTAB .BYTE $00,$03,$0C,$0F
.BYTE $30,$33,$3C,$3F
.BYTE $C0,$C3,$CC,$CF
.BYTE $F0,$F3,$FC,$FF
;*************************
;THIS FILE SHOULD CONTAIN
;TWO ENTRY POINTS FOR A SMALL
;DUMP TO THE PRINTER.
;ENTRY POINTS ARE:
;PDUMPA
;PDUMPB
;PDUMPA SHOULD BE A VERTICAL DUMP
;PDUMPB SHOULD BE HORIZONTAL
;
;*******************
PDUMPA LDA FLAG ;PROTECT OUTPUT
PHA
LDA #0
STA FLAG
JSR RESETP
JSR SETLS
LDA #$00
STA BITMAP
STA ADDR1
STA ROW
LDA #$E0
STA BITMAP+1
STA ADDR2
NEWROW LDA #<BUFRA
STA BUFR
LDA #>BUFRA
STA BUFR+1
LDA #$00
STA COL
SEI
LDA $01
STA TEMP1
LDA #$00
STA $01
LOADBF LDY #$07
VICRXW LDA (BITMAP),Y
LDX #$00
PPXCOL ASL A
ROR PRTPAT,X
INX
CPX #$08
BNE PPXCOL
DEY
BPL VICRXW
LDY #$00
MOVEPN LDA PRTPAT,Y
BIT RVSFLG
BPL NONRE
.BYTE $2C ;BIT $XXXX
NONRE EOR #$FF ;REVERSE IT
STA (BUFR),Y
INY
CPY #$08
BNE MOVEPN
CLC
LDA BUFR
ADC #$08
STA BUFR
LDA BUFR+1
ADC #$00
STA BUFR+1
CLC
LDA BITMAP
ADC #$08
STA BITMAP
LDA BITMAP+1
ADC #$00
STA BITMAP+1
INC COL
LDA COL
CMP #$28
BNE LOADBF
LDA TEMP1
STA $1
CLI
LDX #$00 ;HALFSIES
MODLM LDA BUFRA,X
PHA
AND #%11110000
LSR A
LSR A
LSR A
LSR A
TAY
LDA NORTAB,Y
STA BUFRA,X
PLA
AND #%00001111
TAY
LDA NORTAB,Y
STA BUFRB,X
LDA BUFRA+$A0,X
PHA
AND #%11110000
LSR A
LSR A
LSR A
LSR A
TAY
LDA NORTAB,Y
STA BUFRA+$A0,X
PLA
AND #%00001111
TAY
LDA NORTAB,Y
STA BUFRB+$A0,X
INX
CPX #$A0
BNE MODLM
JSR UNLSN
JSR SNDBFA
JSR SNDBFB
INC ROW
LDA ROW
CMP #$19
BEQ QUIT2
CLC
LDA ADDR1
ADC #$40
STA ADDR1
STA BITMAP
LDA ADDR2
ADC #$01
STA ADDR2
STA BITMAP+1
JMP NEWROW
QUIT2 JSR RESETP
PLA
STA FLAG
RTS
;******************
PDUMPB JSR RESETP
JSR SETLS
LDA #0
LDX #$A0
CLRLUP STA BUFRA,X
STA BUFRA+$A0,X
DEX
BNE CLRLUP
LDA #$28
STA COL
LDA #$07
STA FREKZP
LDA #$FE
STA FREKZP+1
NROWXT JSR GPATUR
JSR SNDBFA
DEC COL
BNE NROWXT
JSR RESETP
RTS
GPATUR SEI
LDA 1
PHA
LDA #$35
STA 1
LDX #0
LDA #$19
STA ROW
GPNXR LDA #$08
STA TEMP1
LDY #0
XPATRE LDA (FREKZP),Y
BIT RVSFLG
BPL NONRE2
.BYTE $2C ;BIT $XXXX
NONRE2 EOR #$FF
STA BUFRA,X
INX
LDA FREKZP
BNE OVRHIX
DEC FREKZP+1
OVRHIX DEC FREKZP
DEC TEMP1
BNE XPATRE
LDA FREKZP
SEC
SBC #$38
STA FREKZP
LDA FREKZP+1
SBC #1
STA FREKZP+1
DEC ROW
BNE GPNXR
LDA FREKZP
CLC
ADC #$48
STA FREKZP
LDA FREKZP+1
ADC #$1F
STA FREKZP+1
PLA
STA 1
CLI
RTS
;*******************
.LIB SRC.GEMINI
.LIB SRC.CUSTOMDUMP
FILEND .END